package com.bjpowernode.mvc.settings;

import com.bjpowernode.mvc.interceptor.TokenInterceptor;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置类
 * WebMvcConfigurer相当于springmvc的xml配置文件
 * addCorsMappings全局跨域处理
 * addInterceptors拦截器
 *
 * @Configuration注解：声明当前类是配置类
 */
@Configuration
public class WebMvcSettings implements WebMvcConfigurer {

    @Resource
    private TokenInterceptor tokenInterceptor;


    //实现全局跨域处理
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        System.out.println("===========addCorsMappings===========");
        //                              /user/**   只有user路径下的才会拦截请求做跨域处理
        registry.addMapping("/**")  //拦截的请求地址做跨域处理
                //                             "http:localhost:8080"  只有这个域名才可以进行跨域
                .allowedOriginPatterns("*")  //允许跨域的域名（请求来源） *表示任意来源
                //                              "OPTIONS" 预检请求
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")  //允许跨域请求使用的请求方式
                .allowCredentials(true)   //允许浏览器发送Cookie
                .maxAge(3600)             //预检有效时间，以秒为单位
                .allowedHeaders("*");     //允许包含的header(请求头)
    }

    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //1、创建数组指定拦截的地址
        String[] addPath = {"/user/realname", "/product/detail", "/bid/buy", "/user/info", "/bid/info", "/recharge/info", "/incomeRecord/info", "/user/logout", "/upload/header"};
        registry.addInterceptor(tokenInterceptor)
                .addPathPatterns(addPath);
    }
}
